/**
 * GoVector API 请求模块
 * 集中管理所有API请求
 */

// API模块
const API = {
    // API基础URL
    apiBaseUrl: '',
    
    // 当前活跃的集合
    activeCollection: '',

    // 设置API基础URL
    setApiBaseUrl(url) {
        this.apiBaseUrl = url;
    },

    // 获取API基础URL
    getApiBaseUrl() {
        return this.apiBaseUrl;
    },

    // 构建完整的API URL
    getUrl(endpoint) {
        return `${this.apiBaseUrl}${endpoint}`;
    },

    // 健康检查
    checkHealth() {
        return axios.get(this.getUrl('/health'))
            .catch(error => {
                console.error('Health check failed:', error);
                return { data: { status: 'error' } };
            });
    },

    // 设置当前活跃的集合
    setActiveCollection(collectionName) {
        this.activeCollection = collectionName;
    },

    // 获取当前活跃的集合
    getActiveCollection() {
        return this.activeCollection;
    },

    // 获取配置
    getConfig(configPath) {
        return axios.get(this.getUrl('/config'), {
            params: { path: configPath }
        });
    },

    // 更新配置
    updateConfig(configPath, configData) {
        return axios.post(this.getUrl('/config'), configData, {
            params: { path: configPath },
            headers: { 'Content-Type': 'text/plain' }
        });
    },

    // 获取所有集合
    getCollections() {
        return axios.get(this.getUrl('/collections'));
    },

    // 创建集合
    createCollection(collectionName, dimension) {
        return axios.post(this.getUrl('/collections'), {
            name: collectionName,
            dimension: dimension
        });
    },

    // 删除集合
    deleteCollection(collectionName) {
        return axios.delete(this.getUrl(`/collections/${collectionName}`));
    },

    // 获取集合信息
    getCollectionInfo(collectionName) {
        return axios.get(this.getUrl(`/collections/${collectionName}`));
    },

    // 获取集合中的所有文档
    getDocuments(collectionName, page = 1, pageSize = 10) {
        return axios.get(this.getUrl(`/documents`), {
            params: { collection_name: collectionName, page, page_size: pageSize }
        });
    },

    // 添加文档
    addDocument(collectionName, document) {
        document.collection_name = collectionName;
        return axios.post(this.getUrl(`/documents`), document);
    },

    // 批量添加文档
    addDocuments(collectionName, documents) {
        return axios.post(this.getUrl(`/batch/documents`), {
            collection_name: collectionName,
            documents: documents
        });
    },

    // 删除文档
    deleteDocument(collectionName, documentId) {
        return axios.delete(this.getUrl(`/documents/${documentId}`), {
            params: { collection_name: collectionName }
        });
    },

    // 获取文档详情
    getDocument(collectionName, documentId) {
        return axios.get(this.getUrl(`/documents/${documentId}`), {
            params: { collection_name: collectionName }
        });
    },

    // 向量搜索
    searchVector(collectionName, query, options = {}) {
        return axios.post(this.getUrl(`/search`), {
            collection_name: collectionName,
            query: query,
            limit: options.limit || 10,
            include_metadata: options.includeMetadata !== false,
            include_embeddings: options.includeEmbeddings || false
        });
    },

    // 获取嵌入向量
    getEmbedding(text) {
        return axios.post(this.getUrl('/embed'), {
            text: text
        });
    },

    // 服务器状态
    getServerStatus() {
        return axios.get(this.getUrl('/status'));
    }
};

// 导出API模块
window.API = API;